import os
import shutil
import time
from pathlib import Path
import logging

# 配置日志记录
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        # logging.FileHandler("clean_script.log"),
        logging.StreamHandler()
    ]
)
logger = logging.getLogger("clean_script")

# 定义要清理的文件夹
FOLDERS_TO_CLEAN = [
    "reports",
    "logs",
    "screenshots"
]


def clean_folder(folder_path: str) -> None:
    """
    清理指定文件夹中的所有文件和子文件夹

    参数:
        folder_path: 要清理的文件夹路径
    """
    # 检查路径是否存在
    if not os.path.exists(folder_path):
        logger.warning(f"文件夹不存在: {folder_path}，跳过清理")
        return

    # 确保路径是一个目录
    if not os.path.isdir(folder_path):
        logger.error(f"路径不是一个文件夹: {folder_path}")
        return

    # 获取文件夹的绝对路径
    abs_path = os.path.abspath(folder_path)
    logger.info(f"开始清理文件夹: {abs_path}")

    # 安全检查：确保我们不会意外删除系统文件
    if abs_path in ["/", "C:\\", "D:\\"]:
        logger.error("拒绝清理根目录，这可能会导致系统崩溃！")
        return

    try:
        # 遍历文件夹中的所有内容
        for item in os.listdir(folder_path):
            item_path = os.path.join(folder_path, item)
            try:
                # 删除文件
                if os.path.isfile(item_path) or os.path.islink(item_path):
                    os.unlink(item_path)
                    logger.info(f"已删除文件: {item_path}")
                # 删除子文件夹
                elif os.path.isdir(item_path):
                    shutil.rmtree(item_path)
                    logger.info(f"已删除文件夹: {item_path}")
            except Exception as e:
                logger.error(f"删除 {item_path} 失败: {e}")
    except Exception as e:
        logger.error(f"清理文件夹 {folder_path} 时发生错误: {e}")


def main() -> None:
    """主函数：清理所有指定的文件夹"""
    logger.info("开始执行清理任务...")

    # 获取当前工作目录
    current_dir = os.getcwd()
    logger.info(f"当前工作目录: {current_dir}")

    # 清理每个文件夹
    for folder in FOLDERS_TO_CLEAN:
        folder_path = os.path.join(current_dir, folder)
        clean_folder(folder_path)

    logger.info("清理任务执行完毕!")


if __name__ == "__main__":
    main()